1 module mruby.data; 2 3 extern (C): 4 5 import mruby; 6 import mruby.mrb_class; 7 import mruby.object; 8 import mruby.variable; 9 import mruby.value; 10 11 struct mrb_data_type 12 { 13 const(char)* struct_name; 14 void function (mrb_state*, void*) dfree; 15 } 16 17 struct RData 18 { 19 enum mrb_vtype 20 { 21 MRB_TT_FALSE = 0, 22 MRB_TT_FREE = 1, 23 MRB_TT_TRUE = 2, 24 MRB_TT_FIXNUM = 3, 25 MRB_TT_SYMBOL = 4, 26 MRB_TT_UNDEF = 5, 27 MRB_TT_FLOAT = 6, 28 MRB_TT_CPTR = 7, 29 MRB_TT_OBJECT = 8, 30 MRB_TT_CLASS = 9, 31 MRB_TT_MODULE = 10, 32 MRB_TT_ICLASS = 11, 33 MRB_TT_SCLASS = 12, 34 MRB_TT_PROC = 13, 35 MRB_TT_ARRAY = 14, 36 MRB_TT_HASH = 15, 37 MRB_TT_STRING = 16, 38 MRB_TT_RANGE = 17, 39 MRB_TT_EXCEPTION = 18, 40 MRB_TT_FILE = 19, 41 MRB_TT_ENV = 20, 42 MRB_TT_DATA = 21, 43 MRB_TT_FIBER = 22, 44 MRB_TT_MAXDEFINE = 23 45 } 46 mrb_vtype tt; 47 uint color; 48 uint flags; 49 RClass* c; 50 RBasic* gcnext; 51 iv_tbl* iv; 52 const(mrb_data_type)* type; 53 void* data; 54 } 55 56 RData* mrb_data_object_alloc (mrb_state* mrb, RClass* klass, void* datap, const(mrb_data_type)* type); 57 void mrb_data_check_type (mrb_state* mrb, mrb_value, const(mrb_data_type)*); 58 void* mrb_data_get_ptr (mrb_state* mrb, mrb_value, const(mrb_data_type)*); 59 void* mrb_data_check_get_ptr (mrb_state* mrb, mrb_value, const(mrb_data_type)*); 60 void mrb_data_init (mrb_value v, void* ptr, const(mrb_data_type)* type);